package com.ruoyi.system.api.service;

import com.ruoyi.system.api.ResponseWithData;
import com.ruoyi.system.api.domain.Signatures;
import com.ruoyi.system.api.domain.StServiceReport;
import com.ruoyi.system.api.domain.dto.ServiceReportDto;
import com.ruoyi.system.api.domain.dto.ServiceReportMdQuestionDto;
import com.ruoyi.system.api.domain.dto.ServiceReportServiceFeeDto;
import com.ruoyi.system.api.domain.dto.ServiceReportTrainingInformationDto;

import java.util.List;

/**
 * 服务报告 (存储服务报告和电话解决报告)Service接口
 * 
 * @author ruoyi
 * @date 2020-03-10
 */
public interface IStServiceReportService 
{
    /**
     * 查询服务报告 (存储服务报告和电话解决报告)
     * 
     * @param id 服务报告 (存储服务报告和电话解决报告)ID
     * @return 服务报告 (存储服务报告和电话解决报告)
     */
    public StServiceReport selectStServiceReportById(Long id);

    /**
     * 查询服务报告 (存储服务报告和电话解决报告)列表
     * 
     * @param stServiceReport 服务报告 (存储服务报告和电话解决报告)
     * @return 服务报告 (存储服务报告和电话解决报告)集合
     */
    public List<StServiceReport> selectStServiceReportList(StServiceReport stServiceReport);

    /**
     * 新增服务报告 (存储服务报告和电话解决报告)
     * 
     * @param stServiceReport 服务报告 (存储服务报告和电话解决报告)
     * @return 结果
     */
    public int insertStServiceReport(StServiceReport stServiceReport);

    /**
     * 修改服务报告 (存储服务报告和电话解决报告)
     * 
     * @param stServiceReport 服务报告 (存储服务报告和电话解决报告)
     * @return 结果
     */
    public int updateStServiceReport(StServiceReport stServiceReport);

    /**
     * 批量删除服务报告 (存储服务报告和电话解决报告)
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteStServiceReportByIds(String ids);

    /**
     * 删除服务报告 (存储服务报告和电话解决报告)信息
     * 
     * @param id 服务报告 (存储服务报告和电话解决报告)ID
     * @return 结果
     */
    public int deleteStServiceReportById(String id);

    /**
     *  查看服务报告详情
     *
     * @param
     * @return com.ruoyi.system.api.ResponseWithData<?>
     * @author yzg
     * @date 2020/3/10 11:03 上午
     */
    public ResponseWithData<?> detailServiceReport(String serviceNo, Long enginnerId, Long reportId);

    /**
     *  编辑服务报告MD问题
     *
     * @param mdQuestionDto
     * @return com.ruoyi.system.api.ResponseWithData<?>
     * @author yzg
     * @date 2020/3/10 11:16 上午
     */
    public ResponseWithData<?> editMdQuestion(ServiceReportMdQuestionDto mdQuestionDto);

    /**
     *  编辑服务报告培训信息
     *
     * @param trainingInformationDto
     * @return com.ruoyi.system.api.ResponseWithData<?>
     * @author yzg
     * @date 2020/3/10 1:13 下午
     */
    public ResponseWithData<?> editServiceTrainingInformation(ServiceReportTrainingInformationDto trainingInformationDto);

    /**
     *  编辑服务报告服务费用
     *
     * @param serviceFeeDto
     * @return com.ruoyi.system.api.ResponseWithData<?>
     * @author yzg
     * @date 2020/3/10 1:39 下午
     */
    public ResponseWithData<?> editServiceFee(ServiceReportServiceFeeDto serviceFeeDto);

    /**
     *  编辑服务报告首页内容
     *
     * @param reportDto
     * @return com.ruoyi.system.api.ResponseWithData<?>
     * @author yzg
     * @date 2020/3/10 2:20 下午
     */
    public ResponseWithData<?> editServiceReport(ServiceReportDto reportDto);

    /**
     *  提交服务报告
     *
     * @param id	服务报告主键ID
     * @param enginnerId	提交的工程师ID
     * @return com.ruoyi.system.api.ResponseWithData<?>
     * @author yzg
     * @date 2020/3/10 2:49 下午
     */
    public ResponseWithData<?> submitServiceReport(Long id, Long enginnerId);


    /**
     * 2.25验收签名照片、发送 邮件（服务报告）
     * @methodName: TransferTL
     * @description: TODO
     * @return: com.ruoyi.system.api.ResponseWithData<?>
     * @author: sjy
     * @date: 2020年3月10日09:35:00
     **/
    public ResponseWithData<?> getServiceRportSignature(Signatures signatures) throws Exception;

    /**
     *  查看服务报告费用详情
     *
     * @param
     * @return com.ruoyi.system.api.ResponseWithData<?>
     * @author yzg
     * @date 2020/3/10 11:03 上午
     *
     */
    public ResponseWithData<?> detailServiceReportFee(String serviceNo, Long enginnerId, String helpId, String bu, String prov, String city);

    /**
     *  查看服务报告费用详情
     *
     * @param
     * @return com.ruoyi.system.api.ResponseWithData<?>
     * @author yzg
     * @date 2020/3/10 11:03 上午
     *
     */

    public ResponseWithData<?> detailServiceReportFee2(String serviceNo, Long enginnerId, String helpId, String bu, String prov, String city , Double chargeHours);

}
